#include "NYPizzaIngredientFactory.h"

#include "ThinCrustDough.h"
#include "Garlic.h"
#include "Onion.h"
#include "Mushroom.h"
#include "RedPepper.h"
#include "SlicedPepperoni.h"
#include "FreshClam.h"
#include "MarinaraSauce.h"
#include "ReggianoCheese.h"

Dough * NYPizzaIngredientFactory::createDough() {
    return new ThinCrustDough();
}

Sauce * NYPizzaIngredientFactory::createSauce() {
    return new MarinaraSauce();
}

Cheese * NYPizzaIngredientFactory::createCheese() {
    return new ReggianoCheese();
}

std::vector<Veggie *> NYPizzaIngredientFactory::createVeggies() {
    std::vector<Veggie *> veggies;
    veggies.push_back(new Garlic());
    veggies.push_back(new Mushroom());
    veggies.push_back(new RedPepper());
    veggies.push_back(new Onion());
    return veggies;
}

Pepperoni * NYPizzaIngredientFactory::createPepperoni() {
    return new SlicedPepperoni();
}

Clam * NYPizzaIngredientFactory::createClam() {
    return new FreshClam();
}